/**
 * 用户信息格式化工具
 * 提供用户信息的统一格式化方法
 */

/**
 * 格式化显示名称
 * @param {Object} user - 用户信息对象
 * @returns {string} 格式化后的显示名称
 */
export function formatDisplayName(user) {
  if (!user) return '匿名用户';
  return user.nickName || user.realName || user.userName || '匿名用户';
}

/**
 * 格式化头像URL
 * @param {string} avatar - 头像地址
 * @returns {string} 完整的头像URL
 */
export function formatAvatar(avatar) {
  if (!avatar) return '/static/default-avatar.png';
  if (avatar.startsWith('http')) return avatar;
  if (avatar.startsWith('/')) return avatar;
  return avatar;
}

/**
 * 格式化用户信息
 * @param {Object} user - 原始用户信息
 * @returns {Object} 格式化后的用户信息
 */
export function formatUserInfo(user) {
  if (!user) return null;
  
  return {
    ...user,
    displayName: formatDisplayName(user),
    avatar: formatAvatar(user.avatar),
    deptName: user.dept?.deptName || '未知部门',
    postName: user.post?.postName || '未知职位',
    phonenumber: user.phonenumber || '',
    email: user.email || '',
    sexText: user.sex === '0' ? '男' : user.sex === '1' ? '女' : '未知',
    statusText: user.status === '0' ? '正常' : '停用'
  };
}

/**
 * 格式化用户统计数据
 * @param {Object} stats - 用户统计数据
 * @returns {Object} 格式化后的统计数据
 */
export function formatUserStats(stats) {
  if (!stats) return {
    todayTasks: 0,
    completedTasks: 0,
    points: 0,
    level: 1
  };
  
  return {
    todayTasks: stats.todayTasks || 0,
    completedTasks: stats.completedTasks || 0,
    points: stats.points || 0,
    level: stats.level || 1,
    completionRate: stats.todayTasks > 0 ? 
      Math.round((stats.completedTasks / stats.todayTasks) * 100) : 0
  };
}

/**
 * 验证手机号码
 * @param {string} phone - 手机号码
 * @returns {boolean} 是否有效
 */
export function validatePhone(phone) {
  const phoneRegex = /^1[3-9]\d{9}$/;
  return phoneRegex.test(phone);
}

/**
 * 验证邮箱地址
 * @param {string} email - 邮箱地址
 * @returns {boolean} 是否有效
 */
export function validateEmail(email) {
  const emailRegex = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
  return emailRegex.test(email);
}

/**
 * 检测密码强度
 * @param {string} password - 密码
 * @returns {Object} 密码强度分析
 */
export function checkPasswordStrength(password) {
  if (!password) return { level: 0, text: '请输入密码' };
  
  let strength = 0;
  
  if (password.length >= 8) strength++;
  if (/[a-z]/.test(password)) strength++;
  if (/[A-Z]/.test(password)) strength++;
  if (/[0-9]/.test(password)) strength++;
  if (/[^A-Za-z0-9]/.test(password)) strength++;
  
  const levels = [
    { level: 0, text: '弱', color: '#ff4d4f' },
    { level: 1, text: '较弱', color: '#ff7a45' },
    { level: 2, text: '一般', color: '#faad14' },
    { level: 3, text: '较强', color: '#52c41a' },
    { level: 4, text: '强', color: '#1890ff' },
    { level: 5, text: '很强', color: '#722ed1' }
  ];
  
  return levels[Math.min(strength, 5)];
}

/**
 * 用户角色格式化
 * @param {Array} roles - 用户角色数组
 * @returns {string} 角色名称字符串
 */
export function formatRoles(roles) {
  if (!roles || !Array.isArray(roles)) return '普通用户';
  
  const roleNames = roles.map(role => role.roleName).filter(name => name);
  return roleNames.length > 0 ? roleNames.join('、') : '普通用户';
}